<template>
	<view style="width: 100%;">
		{{formatTime(dateTime)}}
	</view>
</template>

<script>
	export default{
		props:{
			dateTime:{
				type:String,
				default:true
			}
		},
		methods:{
			formatTime(inputDateString) {
			    // 将输入的日期字符串从 "YYYY年MM月DD日 HH:mm:ss" 格式转换为 ISO 8601 格式
			    const normalizedDateString = inputDateString
			        .replace(/年/g, '-')
			        .replace(/月/g, '-')
			        .replace(/日/g, ' ')
			        .replace(/\s+/g, 'T'); // 替换空格为 'T' 以符合 ISO 8601 格式
			
			    // 将标准化后的字符串转换为日期对象
			    const date = new Date(normalizedDateString);
			
			    // 检查日期是否有效
			    if (isNaN(date.getTime())) {
			        console.warn('无效的日期字符串:', inputDateString);
			        return '---'; // 返回一个默认值
			    }
			
			    const now = new Date(); // 当前日期
			    const diffInSeconds = Math.floor((now - date) / 1000); // 获取时间差（秒）
			
			    const minutes = Math.floor(diffInSeconds / 60);
			    const hours = Math.floor(diffInSeconds / 3600);
			    const days = Math.floor(diffInSeconds / 86400);
			
			    // 计算年份和月份差异
			    const years = now.getFullYear() - date.getFullYear();
			    const months = now.getMonth() - date.getMonth() + (years * 12); // 计算月份差异
			
			    // 如果时间差为0分钟，返回“刚刚”
			    if (minutes === 0) {
			        return '刚刚';
			    }
			
			    // 如果超过两年，显示年月日
			    if (years > 2) {
			        const year = date.getFullYear();
			        const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始，所以加1
			        const day = String(date.getDate()).padStart(2, '0');
			        return `${year}年${month}月${day}日`;
			    }
			
			    // 处理输出
			    if (minutes < 60) {
			        return `${minutes}分钟前`;
			    } else if (hours < 24) {
			        return `${hours}小时前`;
			    } else if (days < 30) {
			        return `${days}天前`;
			    } else if (months < 12) {
			        return `${months}个月前`;
			    } else {
			        return `${years}年前`;
			    }
			}
		}
	}
</script>

<style>
</style>